package main

func main() {

}

type TreeNode struct {
	Val   int
	Left  *TreeNode
	Right *TreeNode
}

/**
 * @Description: 给你一棵二叉搜索树，请你 按中序遍历 将其重新排列为一棵递增顺序搜索树，
使树中最左边的节点成为树的根节点，并且每个节点没有左子节点，只有一个右子节点。
*/
var result []int

func increasingBST(root *TreeNode) *TreeNode {
	result = make([]int, 0)
	inorder(root)
	resultNode := new(TreeNode)
	curNode := resultNode

	for _, value := range result {
		curNode.Right = new(TreeNode)
		curNode = curNode.Right
		curNode.Val = value
	}
	return resultNode.Right
}

func inorder(node *TreeNode) {
	if node != nil {
		inorder(node.Left)
		result = append(result, node.Val)
		inorder(node.Right)
	}
}
